home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_06 / outchip.asm < prev    next >
Assembly Source File  |  1995-01-01  |  2KB  |  134 lines

  1.  
  2. ; OUTCHIP.ASM
  3.  
  4. ; Adlib Inc, 20-avr-89
  5.  
  6.  
  7.   INCLUDE VERSION.INC      ;*** compilation flags are defined in this file ***
  8.  
  9.   IF MICROSOFT
  10.     INCLUDE CMICRO.MAC     ;memory model & equates for Microsoft environment
  11.   ELSE
  12.     INCLUDE DOS.MAC        ;memory model & equates for Lattice environment
  13.   ENDIF
  14.  
  15.   INCLUDE COMMON.MAC       ;macros common to both environments
  16.  
  17.  
  18. ; ========================= DATA SEGMENT =========================
  19. ; data segment
  20.     DSEG
  21. IF MICROSOFT
  22. extrn   _genAddr:WORD        ; address of sound chip.
  23.   ELSE
  24. extrn   genAddr:WORD         ; address of sound chip.
  25.   ENDIF
  26.     ENDDS
  27.  
  28.  
  29.  
  30. ;========================== CODE SEGMENT ============================
  31.  
  32.   IF MICROSOFT
  33.     PSEG  <TIMER>
  34.   ELSE
  35.     PSEG
  36.   ENDIF
  37.  
  38.  
  39.  
  40. ; void SndOutput( addr, dataVal)
  41. ;    int addr, dataVal;
  42. ;
  43. ;    Set the register at address 'addr' to the value 'data'.
  44. ;    Take care of data register to data register write delay.
  45.  
  46. BEGIN SndOutput
  47. SO_F struc
  48.     dw    (?)    ; old bp
  49.     db    CPSIZE DUP (?)    ; return addr
  50. addr    dw    (?)    ; register adress in sound chip
  51. dataVal    dw    (?)    ; data to be written
  52. SO_F ends
  53.  
  54. ; AX & DX lost.
  55.  
  56.     push    bp
  57.     mov    bp, sp
  58.  
  59. IF MICROSOFT
  60.     mov dx, _genAddr ; get address register of sound chip
  61. ELSE
  62.     mov dx, genAddr ; get address register of sound chip
  63. ENDIF
  64.     mov    ax, [ bp].addr
  65.     out    dx, al
  66.  
  67. ; 12 cyles delay ( 3.6 Mhz )
  68.     in    al, dx
  69.     in    al, dx
  70.     in    al, dx
  71.     in    al, dx
  72.     in    al, dx
  73.     in    al, dx
  74.  
  75.     inc    dx        ; get data reg. of sound chip
  76.     mov    ax, [ bp].dataVal
  77.     out    dx, al
  78.     dec dx
  79.  
  80. ; 84 cyles delay ( 3.6 Mhz )
  81.     in    al, dx
  82.     in    al, dx
  83.     in    al, dx
  84.     in    al, dx
  85.     in    al, dx
  86.     in    al, dx
  87.     in    al, dx
  88.     in    al, dx
  89.     in    al, dx
  90.     in    al, dx
  91.  
  92.     in    al, dx
  93.     in    al, dx
  94.     in    al, dx
  95.     in    al, dx
  96.     in    al, dx
  97.     in    al, dx
  98.     in    al, dx
  99.     in    al, dx
  100.     in    al, dx
  101.     in    al, dx
  102.  
  103.     in    al, dx
  104.     in    al, dx
  105.     in    al, dx
  106.     in    al, dx
  107.     in    al, dx
  108.     in    al, dx
  109.     in    al, dx
  110.     in    al, dx
  111.     in    al, dx
  112.     in    al, dx
  113.  
  114.     in    al, dx
  115.     in    al, dx
  116.     in    al, dx
  117.     in    al, dx
  118.     in    al, dx
  119.  
  120.     pop    bp
  121.     ret
  122.  
  123. P_END SndOutput
  124.  
  125.   IF MICROSOFT
  126.     ENDPS  <TIMER>
  127.   ELSE
  128.     ENDPS
  129.   ENDIF
  130.  
  131.     end
  132.  
  133.  
  134.